package com.nuoniu.sibanyun.config;

import com.nuoniu.sibanyun.entity.SysLog;
import com.nuoniu.sibanyun.service.crm.ICrmCustomerService;
import com.nuoniu.sibanyun.service.crm.ICrmSecretKeyService;
import com.nuoniu.sibanyun.service.crm.async.CrmAsyncServer;
import com.nuoniu.sibanyun.service.crm.call.ICrmCallMinutesService;
import com.nuoniu.sibanyun.service.crm.call.ICrmCallTaskService;
import com.nuoniu.sibanyun.service.impl.SysLogServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

/**
 * 定时任务
 * @author 小啊刚
 * @date 2020/08/03
 */
@Configuration("myScheduled")
@EnableScheduling
public class TaskTimerConfig {

    @Autowired
    private ICrmCustomerService crmCustomerService;
    @Autowired
    private ICrmSecretKeyService secretKeyService;
    @Autowired
    private CrmAsyncServer asyncServer;
    @Autowired
    private ICrmCallMinutesService crmCallMinutesService;
    @Autowired
    private SysLogServiceImpl sysLogService;

    @Scheduled(cron="0 0 0 * * ?") //每天0点执行一次
    //@Scheduled(cron = "0/15 * * * * ?") //每15秒执行一次
    public void crmTaskTimer(){
        //检查已到期秘钥
        secretKeyService.checkSecretKey();

        //客户联系提醒
        crmCustomerService.contactCustomerNotice();

        //客户策略检查
        asyncServer.crmStrategy();
//        //校验外呼任务
//        asyncServer.checkAndUpdateTaskState();
    }

    @Scheduled(cron="0 1 0 * * ?") //每天0点1分执行一次
    public void checkDate(){
        //校验外呼任务
        asyncServer.checkAndUpdateTaskState();
    }

    @Scheduled(cron="0 1 0 1 * ?") //每月1号0点1分执行一次
    public void checkMonth(){
        /**
         * 记录当前分钟数 使用情况（月初执行）
         */
        crmCallMinutesService.recordCrmCallMinutes();
        /** 自动续费套餐 */
        crmCallMinutesService.autoRenewalGoodsSetting();
    }

//    @Scheduled(cron="0 */2 * * * ?") //每天0点1分执行一次
//    public void test(){
//        /**
//         * 记录当前分钟数 使用情况（月初执行）
//         */
//        crmCallMinutesService.recordCrmCallMinutes();
//        /** 自动续费套餐 */
//        crmCallMinutesService.autoRenewalGoodsSetting();
//    }

    @Scheduled(cron="0 1 0 1 * ?")//每月1号0点1分执行一次
    public void deleteLog(){
        sysLogService.clean();
    }
}
